<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<div id="app">
			<div>
				<span>用户名：</span>
				<span>
					<!-- 1. 使用 v-model 将值同步到 data 中 -->
					<input type="text" v-model.lazy="val" />
				</span>
				<span>{{ tip }}</span>
			</div>
		</div>

		<script src="scripts/vue.js"></script>
		<script>
			var vm = new Vue({
				el: '#app',
				data: {
					val: '', //用户输入的值
					tip: '',
				},
				methods: {
					// 3. 处理验证的逻辑
					validVal(newVal) {
						setTimeout(() => {
							if (newVal === 'admin') {
								this.tip = '用户名已存在，请换一个'
							} else {
								this.tip = '用户名可以使用...'
							}
						}, 1000)
					},
				},
				watch: {
					// 2. 对用户输入的值 val 进行监听
					val: function (newVal) {
						this.tip = '正在验证中...'
						// 将验证逻辑抽取成一个方法，并调用
						this.validVal(newVal)
					},
				},
			})
		</script>
	</body>
</html>
